import { cva, type VariantProps } from 'class-variance-authority'
export { default as Button } from './main.vue'

export const buttonVariants = cva(
  [
    'inline-block',
    'whitespace-nowrap',
    'rounded-md',
    'font-medium',
    'transition-all',
    'disabled:pointer-events-none',
    'disabled:opacity-50',
    '[&_svg]:pointer-events-none',
    "[&_svg:not([class*='size-'])]:size-4",
    'outline-none',
    'focus-visible:border-ring',
    'focus-visible:ring-ring/50',
    'focus-visible:ring-[3px]',
    'aria-invalid:ring-destructive/20',
    'dark:aria-invalid:ring-destructive/40',
    'aria-invalid:border-destructive',
    'cursor-pointer'
  ],
  {
    variants: {
      variant: {
        default: ['bg-primary', 'text-white', 'shadow-xs', 'hover:bg-primary/90'],
        destructive: [
          // 'bg-destructive',
          // 'text-white',
          // 'shadow-xs',
          // 'hover:bg-destructive/90',
          // 'focus-visible:ring-destructive/20',
          // 'dark:focus-visible:ring-destructive/40',
          // 'dark:bg-destructive/60'
        ],
        outline: [
          'border',
          'bg-background',
          'shadow-xs',
          'hover:bg-accent',
          'hover:text-accent-foreground',

          'border-input',

        ],
        secondary: [
          // 'bg-secondary',
          // 'text-secondary-foreground',
          // 'shadow-xs',
          // 'hover:bg-secondary/80'
        ],
        ghost: [
          // 'hover:bg-accent',
          // 'hover:text-accent-foreground',
          // 'dark:hover:bg-accent/50'
        ],
        link: ['text-primary', 'underline-offset-4', 'hover:underline']
      },
      size: {
        default: ['px-4', 'py-2', 'has-[>svg]:px-3'],
        sm: ['px-3', 'py-1', 'has-[>svg]:px-2.5'],
        lg: [
          // 'h-10',
          // 'rounded-md',
          // 'px-6',
          // 'has-[>svg]:px-4'
        ],
        icon: [
          // 'size-9'
        ]
      }
    },
    defaultVariants: {
      variant: 'default',
      size: 'default'
    }
  }
)

export type ButtonVariants = VariantProps<typeof buttonVariants>
